﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Anuntiomatic.Server.ManageList
{
    public partial class AccountChargingHistoryManagment : BasePage
    {
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            pagingtop.PagingChange += new EventHandler(paging_PagingChange);
        }

        void paging_PagingChange(object sender, EventArgs e)
        {
            pagingtop.PagingChange -= new EventHandler(paging_PagingChange);
            pagingtop.CurrentPage = (sender as UserControl.ucPaging).CurrentPage;
            BindDataGrid();
            pagingtop.Visible = (sender as UserControl.ucPaging).TotalPage > 1;
            pagingtop.PagingChange += new EventHandler(paging_PagingChange);
        }
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                pagingtop.CurrentPage = 1;
                pagingtop.PageSize = PageSize = 50;
                pagingtop.PageDisplay = 6;
            }
        }

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            BindDataGrid();
        }

        void BindDataGrid()
        {
            try
            {
                int currentPage = pagingtop.CurrentPage;
                int pageSize = pagingtop.PageSize;
                int totalRow = 0;
                
                string email = txtEmail.Text.Trim();
                DateTime? fromDate = txtFrom.Text.ToNullableDateTime();
                DateTime? toDate = txtTo.Text.ToNullableDateTime();
                if (fromDate == null)
                    throw new Exception("Bắt buộc chọn ngày bắt đầu tìm kiếm");
                if (toDate == null)
                    throw new Exception("Bắt buộc chọn ngày kết thúc tìm kiếm");
                var query = DB.AccountChargingHistories.AsQueryable();
                if (fromDate.Value >= toDate.Value)
                    throw new Exception("Ngày bắt đầu phải nhỏ hơn ngày kết thúc");
                if(!string.IsNullOrEmpty(email))
                    query = query.Where(p=>p.Email == email);
                query = query.Where(p => p.ChargedDate >= fromDate.Value);
                query = query.Where(p => p.ChargedDate < toDate.Value.AddDays(1));
                totalRow = query.Count();

                grvSysUser.DataSource = query.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
                grvSysUser.DataBind();

                pagingtop.TotalRecord = totalRow;
                pagingtop.Visible = pagingtop.TotalPage > 1;
                ltrInfo.Text = "Total: " + (query.Sum(p => (decimal?)p.Amount) ?? 0) + " VNĐ";
            }
            catch (Exception ex)
            {
                ShowMessageBox(ex.Message);
            }
        }
    }
}